import { defineStore } from 'pinia'
import { getCourseTypes as getCourseTypesApi } from '/@/api/options/index'
import { 
  getCourseTypes as getCourseTypesLs, 
  setCourseTypes as setCourseTypesLs, 
  clearCourseTypes as clearCourseTypesLs 
} from '/@/utils/auth'
import { CourseTypeInfo } from './types'

import { CourseMode } from '/@/store/modules/homePage/types';
import { ITEM_RENDER_EVT } from 'element-plus/es/components/virtual-list/src/defaults';

export const useOptionsStore = defineStore('options', {
  actions: {
    // switchRoles() {
    //   return new Promise((resolve) => {
    //     this.role = this.role === 'user' ? 'user' : 'admin'
    //     resolve(this.role)
    //   })
    // },
    // // 设置用户的信息
    // setInfo(partial: Partial<UserState>) {
    //   this.$patch(partial)
    // },
    // // 重置用户信息
    // resetInfo() {
    //   this.$reset()
    // },
    // // 获取用户信息
    // async info() {
    //   const result = await getUserProfile()
    //   this.setInfo(result)
    // },
    async getCourseTypes(data:any) {
      let courseTypes: CourseTypeInfo[] = getCourseTypesLs();
      if(courseTypes === undefined || courseTypes.length <= 0){
        await getCourseTypesApi(data).then((res) => {
          let {firstCourseTypeInfos} = res;
          courseTypes = firstCourseTypeInfos;
          setCourseTypesLs(firstCourseTypeInfos);
          //console.log(courseTypes);
        }).catch( err =>{
          console.log(err);
        });
      }
      //console.log(courseTypes);
      return courseTypes;
    },
    
    // 获取课程是直播还是录播
    getCourseMode(data :number) {
      // console.log(data);
      if(data === undefined){
        return '';
      }
      if(data === CourseMode.Stream){
        return '直播';
        
      } else if(data === CourseMode.Video ){
        return '录播';
      } else {
        return '';
      }
    },

    ///获取课程类型
    async getCourseType( courseTypeId :string) {
      let courseTypes: CourseTypeInfo[] = await this.getCourseTypes({});
      //console.log(courseTypes);
      const cT = courseTypes.find(item => item.value === courseTypeId);

      if(cT === undefined) { // 课程类型不存在
        
      }

      return cT;
    },

    /// 获取二级课程类型
    async getSecondCourseType( courseTypeId:string) {
      let courseTypes: CourseTypeInfo[] = await this.getCourseTypes({});
      const cT = courseTypes.find(item => item.children.find(child => child.value === courseTypeId));
      //console.log(p);
      if(cT === undefined) {
        //return undefined;
      }

      const cT2 = cT?.children.find(x=>x.value === courseTypeId);

      return cT2;
    },

    // // 异步登录并存储token
    // async login(loginForm: LoginData) {
    //   const result = await userLogin(loginForm)
    //   const token = result?.token
    //   if (token) {
    //     setToken(token)
    //   }
    //   return result
    // },
    // // Logout
    // async logout() {
    //   await userLogout()
    //   this.resetInfo()
    //   clearToken()
    //   // 路由表重置
    //   // location.reload();
    // },
  },
})
